<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    
    /* 
          ! 逻辑非
                - ! 可以用来对一个值进行非运算
                - 它可以对一个布尔值进行取反操作
                - 如果对一个非布尔值进行取反，它会先将其转换为布尔值然后再取反
                    可以利用这个特点将其它类型转换为布尔值
                -- 类型转换
                    转换为字符串
                        显式转换
                            String()
                        隐式转换
                            + ""
                转换为数值
                    显式转换
                        Number()
                    隐式转换
                        +
                转换为布尔值
                    显式转换
                    Boolean()
                    隐式转换
                        ！！
         && 逻辑与
           -- 对两个值进行与运算
            当&&左右两边都为true时，才返回true，否则返回false
            - 与运算是短路的与，如果第一个值为false，则不看第二个值
            与运算是找false，如果找到false直接返回，没有false返回&& 右边的
         || 逻辑或
            - 可以对两个值进行或运算
            当 || 左右有true时，则返回true，否则返回false
            - 或运算也是短路的或，||左边为真时，直接返回，否则返回 || 右边的
    */
   let flag = undefined
   console.log(!flag);
   let a = 1 && null
   console.log(a,'a');
    let c = 1 || undefined
    console.log(c,'c');
  
</script>
</html>